/*
 * @Author: vacrain
 * @Date: 2022-04-27 03:42:50
 * @LastEditors: vacrain
 * @LastEditTime: 2022-04-27 11:10:16
 * @FilePath: /pnpm-init-vite-latest/vite.config.ts
 * @Description:
 *
 */
import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import { resolve } from 'path'
import { viteMockServe } from 'vite-plugin-mock'
import importToCDN from 'vite-plugin-cdn-import'
import viteCompression from 'vite-plugin-compression'

// https://vitejs.dev/config/
export default defineConfig({
    plugins: [
        vue(),
        // mock
        viteMockServe({
            mockPath: 'mock',
        }),
        // CDN
        importToCDN({
            modules: [
                { name: 'vue', var: 'Vue', path: 'https://unpkg.com/vue@next' },
            ],
        }),
        // compress
        viteCompression(),
    ],

    // 为防止部署项目时发生资源路径访问错误的隐患，这里配置相对路径来避免发生。
    base: './',

    // 静态资源引入 ，一般头部引入，这样alias 用path.resolve()配置没问题的
    resolve: {
        alias: {
            '@': resolve(__dirname, 'src'),
            '@comp': resolve(__dirname, 'src/components'),
        },
    },

    // 打包输出文件夹配置，不配置，就都在assets里
    build: {
        // terser会比默认的慢几十倍，所以尽量还是不要写console和debugger
        // minify: "terser", // 默认为esbuild
        // terserOptions: {
        //     compress: {
        //         drop_console: true, // 生产环境移除console
        //         drop_debugger: true, // 生产环境移除debugger
        //     },
        // },

        // 打包输出文件夹配置，不配置，就都在assets里
        rollupOptions: {
            output: {
                // 配置输出文件夹
                chunkFileNames: 'js/[name]-[hash].js',
                entryFileNames: 'js/[name]-[hash].js',
                assetFileNames: '[ext]/[name]-[hash].[ext]',
            },
        },
    },
    server: {
        // 跨域
        proxy: {
            '/ss': {
                target: 'https://saucenao.com/search.php?db=999&output_type=2&url=https://pica.zhimg.com/v2-178387c7e8e907910d715e890bfd7519_1440w.jpg?source=172ae18b&api_key=33d4bee5c19583cd3756ee47f2ebef8edd5bef7e',
                changeOrigin: true,
                rewrite: path => path.replace(/^\/ss/, ''),
            },
        },
    },
})
